#!/sbin/openrc-run
# This script is based on the one created by Phil (bug #255329).

depend() {
	need logger
}

SWATCHDOG_BINARY=${SWATCHDOG_BINARY:-/usr/bin/swatchdog}
SWATCHDOGRC=${SWATCHDOGRC:-/etc/swatchdogrc}
SWATCHDOG_TAILFILE=${SWATCHDOG_TAILFILE:-/var/log/syslog}
SWATCHDOG_LOGFILE=${SWATCHDOG_LOGFILE:-/var/log/swatchdog.log}
SWATCHDOG_ERRFILE=${SWATCHDOG_ERRFILE:-/var/log/swatchdog-err.log}
SWATCHDOG_SCRIPT=${SWATCHDOG_SCRIPT:-/run/swatchdog/swatchdog_script.pl}

gen_script() {
	local tailargs=""
	if [ "${SWATCHDOG_TAILARGS}" ]; then
		tailargs="--tail-args=\"${SWATCHDOG_TAILARGS}\""
	fi
	ebegin "Generating swatchdog script from config"
	${SWATCHDOG_BINARY} --dump-script="${SWATCHDOG_SCRIPT}" \
		--use-cpan-file-tail ${tailargs} \
		--config-file "${SWATCHDOGRC}" $1 "${SWATCHDOG_TAILFILE}"
	eend $?
}

parse_full() {
	gen_script --examine
	ebegin "Parsing complete file once"
	/usr/bin/perl ${SWATCHDOG_SCRIPT} 1>/dev/null
	eend $?
}

start() {
	checkpath -d -q -m 0750 -o root:root /run/swatchdog
	if [ "${PARSE_FULL}" = "YES" ]; then
		parse_full
	fi
	gen_script --tail-file
	ebegin "Starting swatchdog"
	start-stop-daemon --start --quiet --background \
		--make-pidfile --pidfile /run/swatchdog/swatchdog.pid \
		--stdout ${SWATCHDOG_LOGFILE} --stderr ${SWATCHDOG_ERRFILE} \
		--exec /usr/bin/perl -- ${SWATCHDOG_SCRIPT}
	eend $?
}

stop() {
	ebegin "Stopping swatchdog"
	start-stop-daemon --stop --exec /usr/bin/perl \
		--pidfile /run/swatchdog/swatchdog.pid --quiet
	eend $?
}
